package com.rwind.dynamic.report;
 
import net.sf.jasperreports.engine.util.JRResourcesUtil;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.support.ResourcePatternUtils;
import org.springframework.util.ResourceUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
 
import java.util.HashMap;
import java.util.Map;
 
/**
 * @version 1.0.0
 * @Date: 2023/8/10 21:13
 * @Author ZhuYouBin
 * @Description:
 */
@RestController
@RequestMapping("/api/report")
public class TestController {

    /**
     * 将之前制作好的Jasper模板文件编译，编译之后会生成一个【.jasper】后缀的文件，
     * 这个文件就是我们要的模板文件，要把这个文件放到工程的【src/main/resources】资源目录里面
     * @param format
     * @return
     * @throws Exception
     */
    @GetMapping("/export")
    public String exportFile(String format) throws Exception {
        ClassPathResource resource = new ClassPathResource("MyFirstReport.jasper");
        String templatePath = resource.getPath();
        String fileName = "Jasper导出文件";
        /*
         创建传递到 Jasper 模板文件中的数据参数。
         注意：参数的 key 必须和 Jasper Studio 中创建的 Parameters 参数名称相同，否则匹配不上，无法填充数据。
         */
        Map<String, Object> parameters = new HashMap<>();
        parameters.put("titleName", "This is a title.");
        parameters.put("userName", "Tom");
        parameters.put("sex", "man");
        parameters.put("age", "20");
        parameters.put("address", "everywhere.");
        // 执行导出操作
        return JasperReportsUtil.generateReport(templatePath, fileName, format, parameters);
    }
 
}